Proposal by Tan Boon Keat for FreeCAD/Cobalt: 3D CAD with Motion Simulation

Proposed by Tan Boon Keat (profile, biography) Don't forget to submit this proposal to official Google Melange site too!


How will i do that project:

Virtual World is fast become the norm for collaboration and Cobalt is the smalltalk implementation of it. It is also open source and uses peer to peer.

Since 3D content is very important in virtual worlds, a native 3D CAD inside Cobalt will be very useful. FreeCAD/Cobalt aims to have a solid modeling kernel for true solid representation, NURBS for complex surfacing and a multibody dynamics engine for motion simulation.

Currently, freeCAD/Cobalt allows users to create simple prism like solids, assembles the solids into mechanisms and animate the motions.

http://www.youtube.com/user/kayef8#g/u

To improve freeCAD/Cobalt, I will add the following features:

  • GUI to extrude and cut to form complex solids.
  • Boolean operations to actually create, modify and store topologies of complex solids in the modeling kernel.
  • GUI to create and manipulate NURBS to make free form or organic solids.
  • Extend boolean operations to handle NURBS.

For the first month, I will make GUI that will correspond to parts and assemblies. The main idea is to make the user have an easier way to extrude, cut, manipulate and modify assemblies, part in virtual world. The GUI will have to respond to any event and object selection. Extrusion and cut and creating organic shapes will be under the object manipulation and modification. Pop up context menu and dialog will be used for the selected objects and properties of the object will be changed base on the input. Organic shapes will require more specific of angle for the markers.

Progressing in second month, the process will get deep into Boolean operation and manipulation of NURBS. The operation will be started with union, difference and intersection. It will take more than theories to mimic nature and organic shapes. This will require some random output generator, for example random number generator with a computational method based on probability distribution, acceptance-rejection method. The generation of organic shapes can too, be derived from template and option.

For the last month, the new features will be tested and be shared, combining the new feature with the old one. Plus, new feature are to be integrated with motion simulation.

What methodologies will i use:

I will extend the GUI using Tweak which is the native GUI framework inside Cobalt. Users can select a plane or face and then sketch 2D shapes on it. That 2D shape can then be pulled out or pushed in to make extrusions or holes. This process can be repeated many times to create complex shapes.

Based on user interactions the solid model has to be modified by boolean operations of the original solid with the extrusions and holes. The modeling kernel has to be updated accordingly and be ready for the next operation. The modeling kernel is a non-manifold topology kernel based on radial edge by Kevin Weiler.

I will also extend the GUI to create and modify NURBS. This involves moving points and lines in 3D space instead of 2D in sketches. The boolean operations and modeling kernel has to be modified accordingly.

Suggested timeline and milestones:

I will start the project after 17th of May.

1st Month: I will start with making GUI and Boolean operation for basic shapes.

2nd Month: GUI and Boolean operation for NURBS based shapes.

3rd Month: The new features will be shared to Cobalt users and developers. I will distill all the feedback from users and reviewers and incorporate suggestions into the freeCAD/Cobalt that I have created. Thorough testing for consistency and reliability will be done during this time. I will also test, refractor and document the code thoroughly then package it for easy distribution and install.

Where i see the risks:

3D Boolean operations are quite complex and may take more time than expected. But Dr Koh and Mr Phua are very experienced with 3D CAD that I feel confident that I can overcome problems with their help.

How the results will look like:

The resulting freeCAD/Cobalt will be a native 3D CAD inside Cobalt that users can startup anytime to create or modify realistic or fanciful objects in the virtual worlds. It will be collaborative because the 3D creation can be seen by avatars present in the virtual world. The resulting code also be ported to Squeak, Pharo or other Smalltalks.




Updated: 8.4.2010